﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.Data.SqlClient;
using System.Data;

namespace AccesoDatos
{
    public class AgenciaAD
    {
        public static List<Agencia> SelectAll()
        {
            List<Agencia> ListaAgencias = new List<Agencia>();
            SqlConnection conexion = new SqlConnection(Conexion.CadenaConexion);
            try
            {
                conexion.Open();
                string sql = "PA_Agencia_SelectAll";
                SqlCommand comando = new SqlCommand(sql, conexion);
                comando.CommandType = CommandType.StoredProcedure;
                SqlDataReader reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    Agencia nuevaAgencia = new Agencia();
                    nuevaAgencia.Codigo = reader["Codigo"].ToString();
                    nuevaAgencia.Nombre = reader["Nombre"].ToString();
                    nuevaAgencia.Pais = PaisAD.Buscar(Convert.ToInt32(reader["Pais"]));
                    ListaAgencias.Add(nuevaAgencia);
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                conexion.Close();
            }
            return ListaAgencias;
        }

        public static Agencia Buscar(string codigo)
        {
            Agencia nuevaAgencia = new Agencia();
            SqlConnection conexion = new SqlConnection(Conexion.CadenaConexion);
            try
            {
                conexion.Open();
                string sql = "PA_Agencia_Buscar";
                SqlCommand comando = new SqlCommand(sql, conexion);
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@Codigo", codigo);
                SqlDataReader reader = comando.ExecuteReader();
                reader.Read();
                nuevaAgencia.Codigo = reader["Codigo"].ToString();
                nuevaAgencia.Nombre = reader["Nombre"].ToString();
                nuevaAgencia.Pais = PaisAD.Buscar(Convert.ToInt32(reader["Pais"]));               
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                conexion.Close();
            }
            return nuevaAgencia;
        }

        public static void Nueva(Agencia nuevaAgencia)
        {            
            SqlConnection conexion = new SqlConnection(Conexion.CadenaConexion);
            try
            {
                conexion.Open();
                string sql = "PA_Agencia_Nueva";
                SqlCommand comando = new SqlCommand(sql, conexion);
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@Codigo", nuevaAgencia.Codigo);
                comando.Parameters.AddWithValue("@Nombre", nuevaAgencia.Nombre);
                comando.Parameters.AddWithValue("@Pais", nuevaAgencia.Pais.ID);
                comando.ExecuteNonQuery();               
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                conexion.Close();
            }           
        }
    }
}
